package com.academico.web.servlet.disciplina;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.academico.dao.DisciplinaDAO;
import com.academico.model.Disciplina;
import com.academico.util.Util;
import com.academico.web.servlet.BaseServlet;

public class SaveDisciplinaServlet extends BaseServlet {

	private static final long serialVersionUID = 6626853271216630011L;

	@Override
	public void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		List<String> erros = new ArrayList<String>();
		Integer codigoDisciplina = Util.convertStringToInteger(request.getParameter("codigoDisciplina"));
		Integer codigoCurso = Util.convertStringToInteger(request.getParameter("codigoCurso"));
		String descricao = request.getParameter("descricao");
		Date dataCriacao = Util.createSimpleDate(request.getParameter("dataCriacao"), "dd/MM/yyyy");
		Integer cargaHoraria = Util.convertStringToInteger(request.getParameter("cargaHoraria"));

		validateParameters(erros, codigoDisciplina, codigoCurso, dataCriacao, descricao, cargaHoraria);
		
		if(erros.size() == 0 ){
			
			Disciplina disciplina = new Disciplina();
			disciplina.setCodigoDisciplina(codigoDisciplina);
			disciplina.setCodigoCurso(codigoCurso);
			disciplina.setDescricao(descricao);
			disciplina.setDataCriacao(dataCriacao);
			disciplina.setCargaHoraria(cargaHoraria);
			disciplina.setSituacaoDisciplina(Disciplina.SituacaoDisciplina.ATIVA);
			
			DisciplinaDAO disciplinaDAO = new DisciplinaDAO();
			disciplinaDAO.save(disciplina);
			setAttributeToRequest(request, "message", "Sucesso na operacao");
			
		} else {
			setAttributeToRequest(request, "errors", erros);
		}
		
		forward("disciplina", request, response);
		
		
		
	}
	
	private void validateParameters(List<String> erros, Integer codigoDisciplina, Integer codigoCurso, Date dataCriacao, String descricao, Integer cargaHoraria){
		if(Util.isNull(codigoDisciplina)){
			erros.add("Codigo da disciplina invalida");
		}
		if(Util.isNull(codigoCurso)){
			erros.add("Codigo do curso invalido");
		}
		if(Util.isNull(dataCriacao)){
			erros.add("Data da criacao invalida");
		}

		if(Util.isBlankOrNull(descricao)){
			erros.add("Descricao invalida");
		}

		if(Util.isNull(cargaHoraria)){
			erros.add("Carga horaria invalida");
		}
	}

}
